/**
 * 第三题
 */
package q3;

import java.util.Random;

/**
 * 厨师
 * 继承了Runnable，代表他的一个独立的运动体
 * @author：涂有
 * @date 2017年12月1日 下午5:39:50
 */
public class Chef implements Runnable{

	private String name;
	/**所属餐馆*/
	private Restaurant restaurant;
	/**随机数生成器，模拟服务员送菜时长*/
	private Random random = new Random();

	public Chef(String name, Restaurant restaurant) {
		this.name = name;
		this.restaurant = restaurant;
	}

	public String getName() {
		return name;
	}
	
	/**
	 * 厨师做菜
	 * @author：涂有
	 * @date 2017年12月2日 下午4:31:55
	 * @param order 厨师拿到的票据，知道自己做什么菜
	 */
	public void cook(Order order){
		try {
			Thread.sleep(random.nextInt(5000));
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.format("厨师：%s，做好顾客'%s'的菜：%s\n", name, order.getCustomer().getName(), order.getFood().getName());
		restaurant.getFinishOrders().add(order); //表示厨师做好菜，放在呈送台等待服务员呈送
	}

	/**
	 * 厨师不断去拿订单，然后好烧菜
	 */
	@Override
	public void run() {
		while(true){
			try {
				Order o = restaurant.getNewOrders().take();
				cook(o);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}
